#ifndef AGENT_H
#define AGENT_H

#include "Bodies/AgentBody.hpp"
#include "Perceptions/Perception.hpp"
#include <vector>
#include <iostream>

class Agent{
protected:
    AgentBody* m_body;

public:
    virtual void live() = 0;
    inline AgentBody* getBody(){return m_body;}
    virtual std::vector<Perception*> getPerceptions() = 0;
    virtual ~Agent(){
        std::cout<<"Destruction Agent"<<std::endl;
        delete m_body;        
    }
};

#endif // AGENT_H
